In computer science, a virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each VM may function as a self-contained platform, running its own operating system (OS) and software applications (processes). Typically, a virtual machine monitor (VMM) manages allocation and virtualization of computer resources and performs context switching, as may be necessary, to cycle between various VMs.
A host machine (e.g., computer or server) is typically enabled to host services, applications, or other processed. A host machine may simultaneously run multiple VMs, where each VM may be used by a local or remote client. The host machine allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including operating systems known as guest operating systems. The VMM virtualizes the underlying hardware of the host machine or emulates hardware devices.
Host machines are typically connected to some type of storage domain for writing data to and reading data from. Occasionally, a data store (e.g., a storage device or an entire storage domain) may become unreachable by a host machine. In conventional network architectures, it can be difficult and time consuming to determine whether the problem is due to a malfunctioning data store or storage domain, or whether the problem is due to a malfunctioning host machine.